home *** CD-ROM | disk | FTP | other *** search
/ Internet Tools (InfoMagic) / Internet Tools.iso / dos_win / winsock / maillist / 94-05.Z / 94-05 / 000189_news@bigblue.oit.unc.edu_Fri May 13 15:15:18 1994.msg < prev    next >
Internet Message Format  |  1994-05-31  |  2KB

  1. Received: from bigblue.oit.unc.edu by SunSITE.Unc.EDU (5.65c+IDA/FvK-1.07) with SMTP
  2.           id AB29577; Fri, 13 May 1994 15:15:18 -0400
  3. Received: by bigblue.oit.unc.edu (AIX 3.2/UCB 5.64/4.03)
  4.           id AA17702; Fri, 13 May 1994 15:12:03 -0400
  5. Received: from GATEWAY by bigblue with netnews
  6.     for winsock@sunsite.unc.edu (winsock@sunsite.unc.edu)
  7. To: winsock@sunsite.unc.edu
  8. Date: Fri, 13 May 1994 15:02:31
  9. From: Gregory_French@brown.edu (Greg French)
  10. Message-Id: <Gregory_French.161.007DD816@brown.edu>
  11. Organization: Brown University
  12. Sender: ses
  13. References: <2qviju$du0@ratatosk.uninett.no>
  14. Subject: Re: WSAAsyncSelect(.., FD_WRITE | FD_READ) question!
  15.  
  16. >We are having trouble with FD_READ and FD_WRITE messages!
  17. >We would like to use the function WSAAsyncSelect() this way:
  18. >      WSAAsyncSelect(s, hWnd, READ_OR_WRITE, FD_READ | FD_WRITE);
  19.  
  20. >The READ_OR_WRITE message calls a function of ours.
  21. >Our question is:
  22. >     Can one find out in this function if it was an FD_READ
  23. >     or an FD_WRITE that called the function?
  24.  
  25.  
  26. It's pretty easy:
  27.  
  28.      switch(WSAGETSELECTEVENT(lParam)){
  29.  
  30.           case FD_READ:
  31.                // Code goes here...
  32.                break;
  33.     
  34.           case FD_WRITE:
  35.                // Code goes here...
  36.                break;
  37.  
  38.           case FD_CLOSE:
  39.                // Code goes here...
  40.                break;
  41.     
  42.      }
  43.  
  44.  
  45. NOTE:
  46.  
  47. Keep in mind that READ is "level-triggered", while WRITE is "edge-triggered".
  48.  
  49. This means that you will keep getting READ messages WHENEVER you should 
  50. read from the socket.
  51.  
  52. On the other hand, you only get a WRITE message ONCE, signalling that you can 
  53. begin writing to the socket.  After that, keep writing unless you get an 
  54. error.  If you do get an error, you will get ONE more WRITE message when 
  55. writing can resume, etc...
  56.  
  57. Good Luck,
  58.  
  59. Greg